﻿package org.abc.utils
{

	import flash.external.ExternalInterface;
	import flash.net.URLRequest;
	import flash.net.navigateToURL;

	/**
	 * 此类主要用在swf在网页中调试用的，swf可直接调用本类方法获取网页路径和弹出警告窗口
	 * @author aishi
	 *
	 */
	public class JSUtil
	{
		/**
		 * 获取网页路径
		 * @return String
		 *
		 */
		public static function getPageUrl():String
		{
			var pageurl:String=ExternalInterface.call("eval", "window.location.href");
			if (pageurl == null)
				pageurl="none";
			return pageurl;
		}

		/**
		 * 弹出窗口
		 * @param msg 消息数据
		 *
		 */
		public static function explorerAlert(msg:String):void
		{
			navigateToURL(new URLRequest("javascript:alert('" + msg + "')"), "_self");
		}

		/**
		 * 获取网页编码
		 * @return String
		 *
		 */
		public static function getpageEncoding():String
		{
			var pageencoding:String=ExternalInterface.call("eval", "document.charset");
			if (pageencoding == null)
				pageencoding=ExternalInterface.call("eval", "document.characterSet");

			if (pageencoding == null)
				pageencoding="NONE";

			return pageencoding.toUpperCase();
		}

		/**
		 * 获取浏览器类型
		 * @return String
		 *
		 */
		public static function getBrowserType():String
		{
			var browsertype:String=ExternalInterface.call("eval", "navigator.userAgent");
			return (browsertype ? browsertype : "NONE");
		}

		/**
		 * 直接调用网页中定义的javascript函数
		 * @param code
		 * @return
		 *
		 */
		public static function eval(code:String):void
		{
			ExternalInterface.call("eval", code);
		}

		/**
		 * 定义网页中javascript函数调用接口函数
		 * @param funName 供javascript调用接口函数字符串表现形式
		 * @param closure 接口函数映射函数
		 * @return
		 *
		 */
		public static function addCall(funName:String, closure:Function):void
		{

			ExternalInterface.addCallback(funName, closure)

		}

		/**
		 * 调用网页中javascript函数
		 * @param funName javascript函数字符串表现形式
		 * @param ...arg javascript接口函数参数
		 * @return
		 *
		 */
		public static function call(funName:String, ... arg):void
		{

			ExternalInterface.call(funName, arg);

		}

		/**
		 * 禁用网页滚动条
		 * @return
		 *
		 */
		public static function diswebScroll():void
		{
			var offwebScroll:XML=<script>    
					<![CDATA[    
					// 参数为地图物件的object id    
					function (objId) {    
						// 取得地图对象的参考    
						var obj = document.getElementById(objId);    
							
						// 滚轮事件的处理函式    
						function preventDefault(e) {    
							// 下面的程序代码让滚轴事件发生在地图对象时，就取消预设的页面卷动行动，    
							// 可以在ff，ie上执行    
							if (window.event) {    
								window.event.returnValue = false;    
							}    
							if (e && e.preventDefault) {    
								e.preventDefault();    
							}    
						}    
							
						// 挂上事件处理，这里的作法可在大多数的主要浏览器上执行，包括ff，ie    
						if (obj.addEventListener) {    
							obj.addEventListener('DOMMouseScroll', preventDefault, true);    
						} else if (obj.attachEvent) {    
							obj.attachEvent('onmousewheel', preventDefault, true);    
						} else {    
							obj['onmousewheel'] = preventDefault;    
						}    
					}    
				]]>    
				</script>;
			ExternalInterface.call(offwebScroll, ExternalInterface.objectID);
		}
	}
}


